<%@page import="java.util.Random"%>
<%@page import="java.net.URLEncoder"%>
<%@page import="qualomelhor.gwt.modules.client.ClientUtils"%>
<%@page import="qualomelhor.database.ParametrosSistema.OrigemLogin"%>
<%@page import="com.google.gwt.search.client.SearchControlOptions"%>
<%@page import="java.util.HashMap"%>
<%@page import="qualomelhor.util.*"%>
<%@page import="qualomelhor.database.Usuario"%>
<%@page import="qualomelhor.server.DAO"%>
<%@page import="java.util.List"%>
<%@page import="java.util.ArrayList"%>
<%@page import="qualomelhor.database.*"%>
<%@page import="qualomelhor.database.ParametrosSistema.SiteHost"%>
<%@page import="twitter4j.Twitter"%>
<%@page import="twitter4j.TwitterFactory"%>
<%@page import="twitter4j.Status"%>
<%@page import="twitter4j.TwitterException"%>
<%@page import="twitter4j.auth.RequestToken"%>
<%@page import="twitter4j.conf.ConfigurationBuilder"%>
<%@page import="twitter4j.auth.AccessToken"%>
<%@page import="java.net.URL"%>
<%@page import="java.io.BufferedReader"%>
<%@page import="java.io.InputStreamReader"%>
<%@page import="java.net.MalformedURLException"%>
<%@page import="java.io.IOException"%>
<%@page import="com.google.gson.*"%>
<%@page import="java.util.Date"%>

<%!
	public String siteMapCategoriaFilho(long idCategoriaPai, String locale, SiteHost site) {
		DAO d = new DAO();
		ArrayList<Categoria> listCategorias = d.getListaSubCategorias(idCategoriaPai);
		System.out.println("listSubCategorias.size para idCategoria: " + idCategoriaPai + " = " + listCategorias.size());
		String result = "";
		for (Categoria c: listCategorias) {
			result += "<url>\r\n";
			result += "<loc>http://" + site.getHost() + c.getPathCategoria(locale) + "</loc>\r\n";
			result += "</url>\r\n";
			result += siteMapCategoriaFilho(c.getId(), locale, site);
			result += siteMapProdutosFilho(c.getId(), locale, site);
		}
		return result;
	}

	public String siteMapProdutosFilho(long idCategoriaPai, String locale, SiteHost site) {
		DAO d = new DAO();
		ArrayList<Produto> listProdutos = d.getListaProdutos(idCategoriaPai);
		System.out.println("listProdutos.size para idCategoria: " + idCategoriaPai + " = " + listProdutos.size());
		String result = "";
		for (Produto p: listProdutos) {
			LinkCategoria_Produto linkProduto = d.getLinkProduto(p.getId(), locale);
			//System.out.println("linkCategoria_Produto: " + linkProduto);
			if (linkProduto != null) {
				//System.out.println("linkCategoria_Produto.link: " + linkProduto.getLink());
				result += "<url>\r\n";
				result += "<loc>http://" + site.getHost() + linkProduto.getLink() + "</loc>\r\n";
				result += "</url>\r\n";
			}
		}
		return result;
	}
%>

<%
	DAO d = new DAO();
	String tipoCorrecao = request.getParameter("tipoCorrecao");

	if (tipoCorrecao == null || tipoCorrecao.equals("0")) {

		response.getWriter().println("1 - Correcao de BuscaProduto<BR>");

	} else if (tipoCorrecao.equals("1")) {

		ArrayList<BuscaProduto> listBusca = d.getListaBuscaProduto();
		for (int i = 0; i < listBusca.size(); i++) {
			Produto p = d.getProduto(listBusca.get(i).getIdProduto());
			if (p == null) {
				//deletar a busca porque o produto nao existe
				if (d.deletaTodasBuscasProduto(listBusca.get(i).getIdProduto())) {
					response.getWriter().println("Deletou todas as buscas do produto: " + listBusca.get(i).getIdProduto() + "<BR>");
				} else {
					response.getWriter().println("Falhou ao deletar as buscas do produto: " + listBusca.get(i).getIdProduto() + "<BR>");
				}
			}
		}
		response.getWriter().println("Fim da correcao...");
	} else if (tipoCorrecao.equals("2")) {

		ArrayList<LinkComparacao> listLink = d.getListaLinkComparacao(); 
		for (LinkComparacao l: listLink) {
			response.getWriter().println("Link: " + l.getLink() + ", site: " + l.getSite().getPergunta() + ", idComparacao:" + l.getIdComparacao() + "<BR>");
		}
		response.getWriter().println("simulando busca do link: p-ou-q no site: [" + SiteHost.getSiteHostPerHost(request.getServerName()) + "]<BR>");
		LinkComparacao linkComparacao = d.getLinkComparacao("p-ou-q", SiteHost.getSiteHostPerHost(request.getServerName()));
		if (linkComparacao != null) {
			response.getWriter().println("link ok - " + linkComparacao.getLink() + "<BR>");
		} else {
			response.getWriter().println("link nulo - nao encontrado<BR>");
		}

	} else if (tipoCorrecao.equals("3")) {

		ArrayList<LinkCategoria_Produto> listLink = d.getListaLinkCategoria_Produto(true); 
		for (LinkCategoria_Produto l: listLink) {
			response.getWriter().println("Link: [" + l.getLink() + "], locale: [" + l.getLocale() + "], idComparacao:[" + l.getIdCategoria() + "], idProduto; [" + l.getIdProduto() + "]<BR>");
		}
	} else if (tipoCorrecao.equals("4")) {

		ArrayList<BuscaComparacao> listBusca = d.getListaBuscaComparacao();
		response.getWriter().println("listBusca.size = " + listBusca.size() + "<BR>");
		for (BuscaComparacao bsc: listBusca) {
			response.getWriter().println("Busca - Comparacao: [" + bsc.getIdComparacao() + "], Produto: [" + bsc.getIdProduto() + "]<BR>");
		}

	} else if (tipoCorrecao.equals("5")) {

		response.getWriter().println("Carregando a sessao...<BR>");
		HashMap<String, Object> mapSession = (HashMap<String, Object>)session.getAttribute("SESSIONVAR");

		response.getWriter().println("mapSession.size() = " + mapSession.size() + "<BR>");
		Usuario u = (Usuario)mapSession.get("USUARIOATUAL");
		if (u != null) {
			response.getWriter().println("mapSession usuario = " + u.getNomeUsuario() + "<BR>");
		} else {
			response.getWriter().println("mapSession usuario nulo <BR>");
		}

		response.getWriter().println("Usuarios.. <BR>");
		ArrayList<Usuario> listUser = d.getListUsuario();
		for (Usuario usr: listUser) {
			response.getWriter().println("Usuario u = " + usr + " - Nome: [" + usr.getNomeUsuario() + "], Origem: [" + usr.getOrigemLogin() + "]<BR>");
		}

	} else if (tipoCorrecao.equals("6")) {

		Comparacao comp = d.getComparacao(62L);
		response.getWriter().println("comp.link = " + comp.getPath(SiteHost.SITE_QUALQUER) + "<BR>");
		Produto p1 = d.getProduto(comp.getListProdutosComp().get(0));
		Produto p2 = d.getProduto(comp.getListProdutosComp().get(1));
		response.getWriter().println("Produto p1 = " + p1.getNomeProduto() + "<BR>");
		response.getWriter().println("Produto p2 = " + p2.getNomeProduto() + "<BR>");
		response.getWriter().println("listImageP1 = " + p1.getListEnderecoFoto() + "<BR>");
		response.getWriter().println("listImageP2 = " + p2.getListEnderecoFoto() + "<BR>");

		//response.getWriter().println("listImageStreamP1.stream64 = [" + Base64.encodeToString(p2.getListImageBlob().get(0).getBytes(), true) + "]<BR>");
	} else if (tipoCorrecao.equals("7")) {
		int offset = Integer.parseInt(request.getParameter("offset"));
		int limit = Integer.parseInt(request.getParameter("limit"));
		ArrayList<LinkBlobImage> listBlobImage = d.getListaLinkBlobImage(offset, limit);
		for (LinkBlobImage l: listBlobImage) {
			response.getWriter().println("Link:[" + l.getId() + "]<BR>");
			response.getWriter().println("<img src=\"/img/" + l.getId() + "\"><BR>");
		}
	} else if (tipoCorrecao.equals("8")) {
		//Salva a recontagem do numero de comparacoes nos produtos
		ArrayList<Produto> listProds = d.getListaProdutos(true);
		for (Produto p: listProds) {
			ArrayList<Comparacao> listComp = d.getListaComparacao(p.getId());
			if (listComp != null) {
				p.setNumComparacoes(listComp.size());
				response.getWriter().println("Produto id:[" + p.getId() + "] nome: [" + p.getNomeProduto() + "] - numComparacoes = " + p.getNumComparacoes() + "<BR>");
				d.gravaNovoProduto(p);
				response.getWriter().println("Salvou o Produto<BR>");
			}
		}

	} else if (tipoCorrecao.equals("9")) {
		int numBackgrounds = 7;
		String backgroundUrl = "/images/background/fundo" + ((int)(Math.floor(Math.random() * (numBackgrounds - 1)) + 1)) + ".jpg";
		session.setAttribute("BACKGROUND", backgroundUrl);
		response.getWriter().println("<img src='" + backgroundUrl + "'><BR>");
	} else if (tipoCorrecao.equals("10")) {
		ArrayList<SequenciaExpressaoDB> listSeqExpr = d.getListaSequenciaExpressaoDB();
		for (SequenciaExpressaoDB seq: listSeqExpr) {
			//response.getWriter().println("ArrayList<ExpressaoDB> listExpressao = new ArrayList<ExpressaoDB>(0);<BR>");
			//response.getWriter().println("listExpressao.add(new ExpressaoDB(nome, pMaos, pOlho, posBoc, sobra, velocD, velocE, riscarD, riscarE, animar));<BR>");
			//sponse.getWriter().println("mapSeqExpr.put(\"" + seq.getNome() + "\", new SequenciaExpressaoDB("listExpressao, listTempoLoop, reestart, frameRestart, tempoRestart));<BR>");
		}
	} else if (tipoCorrecao.equals("11")) {
		//ATUALIZAR O MEMCACHE
		ArrayList<Comparacao> listComp = d.getListaComparacao(true);
		response.getWriter().println("listComparacoes atualizados no memcache:" + listComp.size() + "<BR>");
		ArrayList<Produto> listProd = d.getListaProdutos(true);
		response.getWriter().println("listProdutos atualizados no memcache:" + listProd.size() + "<BR>");
		SiteHost site = SiteHost.getSiteHostPerHost(request.getServerName());
		ArrayList<Comparacao> listCompUltimas = d.getListaUltimasComparacoes(site, site.getLocale()[0], 6, true);
	} else if (tipoCorrecao.equals("12")) {
		//CODIGO PARA ATUALIZAR UTIL E CLIENTUTILS - TERMOIDIOMA
		ArrayList<TermoIdioma> listTermo = d.getListaTermoIdioma(0, 100, true, false);
		int numResults = 0;
		int offset = 0;
		do {
			numResults += listTermo.size();
			for (TermoIdioma term: listTermo) {
				if (term.getTraducao() != null && !term.getTraducao().equals("null") && !term.getTraducao().trim().equals("")) {
					response.getWriter().println("mapTerm.put(\"" + term.getTermo() + "_" + term.getLocale() + "\", \"" + term.getTraducao() + "\");<BR>");
				}
			}
			offset += 100;
			listTermo = d.getListaTermoIdioma(offset, 10000, true, false);
		} while (listTermo.size() > 0);
		response.getWriter().println("numResults incluindo nulos e nao traduzidos = " + numResults + "<BR>");
	} else if (tipoCorrecao.equals("13")) {
		//GRAVA O USUARIO ADMIN
		Usuario u = (Usuario)session.getAttribute("USUARIOATUAL");
		boolean result = false;
		if (u.getNomeUsuario().equals("Rodrigo Romano Teixo")) {
			u.setAdmin(true);
			result = d.gravaNovoUsuario(u);
		}
		if (result) {
			response.getWriter().println("usuario virou admin<BR>");
		} else {
			response.getWriter().println("nao foi possivel salvar o usuario<BR>");
		}
	} else if (tipoCorrecao.equals("14")) {
		//ALTERA A CATEGORIA DO PRODUTO
		Long idProduto = Long.parseLong(request.getParameter("idProd"));
		Long idCategoria = Long.parseLong(request.getParameter("idCategoria"));
		Produto prod = d.getProduto(idProduto);
		boolean result = false;
		if (prod != null) {
			prod.setIdCategoria(idCategoria);
			result = d.gravaNovoProduto(prod);
		}
		if (result) {
			response.getWriter().println("Salvo com sucesso!");
		} else {
			response.getWriter().println("ERRO AO SALVAR O PRODUTO!!");
		}
	} else if (tipoCorrecao.equals("15")) {
		SiteHost site = SiteHost.getSiteHostPerHost(request.getServerName());
		String locale = site.getLocale()[0];
		if (site.getHost().indexOf("localhost") != -1) {
			locale = "pt_BR";
		}
		System.out.println("site = " + site.getHost() + ", locale = " + locale);
		response.setContentType("text/plain");
		response.getWriter().println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
		response.getWriter().println("<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">");

		//Url base
		response.getWriter().println("<url>");
		response.getWriter().println("<loc>http://" + site.getHost() + "</loc>");
		response.getWriter().println("</url>");

		ArrayList<Categoria> list = d.getListaCategoriasNivel0(true);
		System.out.println("size = " + list.size());

		//Categorias e produtos
		for (Categoria c: list) {
			System.out.println("c.name = " + c.getNomeCategoria());
			response.getWriter().println("<url>");
			response.getWriter().println("<loc>http://" + site.getHost() + c.getPathCategoria(locale) + "</loc>");
			response.getWriter().println("</url>");
			response.getWriter().println(siteMapCategoriaFilho(c.getId(), locale, site));
			String resultProdCategoria = siteMapProdutosFilho(c.getId(), locale, site);
			System.out.println("resultProdCategoria = " + resultProdCategoria);
			response.getWriter().println(resultProdCategoria);
		}

		//Comparacoes
		ArrayList<Comparacao> listComp = d.getListaComparacao(true);
		for (Comparacao comp: listComp) {
			System.out.println("comp.pergunta = " + comp.getPergunta(site, locale));
			System.out.println("comp.link = " + comp.getPath(site));
			response.getWriter().println("<url>");
			response.getWriter().println("<loc>http://" + site.getHost() + "/" + comp.getPath(site) + "</loc>");
			response.getWriter().println("</url>");
		}
		response.getWriter().println("</urlset>");

	} else if (tipoCorrecao.equals("16")) {
		//ALTERA A CATEGORIA PAI DA CATEGORIA
		Long idCategoria = Long.parseLong(request.getParameter("idCategoria"));
		Long idCategoriaPai = Long.parseLong(request.getParameter("idCategoriaPai"));
		Categoria cat = d.getCategoria(idCategoria);
		cat.setCategoriaPai(idCategoriaPai);
		boolean result = d.gravaNovaCategoria(cat, cat.getLocale_Name());
		if (result) {
			response.getWriter().println("Salvo com sucesso!");
		} else {
			response.getWriter().println("ERRO AO SALVAR A CATEGORIA!!");
		}

	} else if (tipoCorrecao.equals("17")) {
		//ALTERA O SCHEMA DO PRODUTO
		Long idProduto = Long.parseLong(request.getParameter("idProduto"));
		String schema = request.getParameter("schema");
		Produto prod = d.getProduto(idProduto);
		prod.setSchema(schema);
		boolean result = d.gravaNovoProduto(prod);
		if (result) {
			response.getWriter().println("Salvo com sucesso!");
		} else {
			response.getWriter().println("ERRO AO SALVAR O PRODUTO!!");
		}
	} else if (tipoCorrecao.equals("18")) {
		// POSTAR TWEET
		Usuario u = (Usuario)session.getAttribute("USUARIOATUAL");
		if (u != null && u.getOrigemLogin() == OrigemLogin.TWITTER.getSiteOrigem()) {
			String coment = request.getParameter("tweetComment");
			if (coment != null && !coment.trim().equals("")) {

		        String token = ClientUtils.lerTag(u.getAccessToken(), "TK");
		        String tokenSecret = ClientUtils.lerTag(u.getAccessToken(), "TKS"); 

		        AccessToken accessToken = new AccessToken(token, tokenSecret);
				
		        TwitterFactory factory = new TwitterFactory();
		        Twitter twitter = factory.getInstance();
		        twitter.setOAuthConsumer("uTj7h9PgJOP1Jld9ny1vNg", "7pinRWRQKDvgLLuc4dMA5pWyubIb5767rStjrLagY");
				twitter.setOAuthAccessToken(accessToken);

		    	Status status = twitter.updateStatus(coment);
				response.getWriter().println("POSTADO COM SUCESSO!!");
		    	System.out.println("Successfully updated the status to [" + status.getText() + "].");
			} else {
				response.getWriter().println("COMENTARIO BRANCO OU NULO!!");
			}
		} else {
			response.getWriter().println("USUARIO NAO EH DO TWITTER!!");
		}
	} else if (tipoCorrecao.equals("19")) {
		//CORRIGE AS COMPARACOES QUE ESTAO SEM A IMAGEM VERSUS
		ArrayList<Comparacao> listComp = d.getListaComparacao(true);
		String result = "";

		String forceUpdate = request.getParameter("force");

		for (Comparacao c: listComp) {
			if (forceUpdate != null || c.getLinkImageVersus() == null || c.getLinkImageVersus().equals("")) {
				result = d.gravaLinkImageVersus(c, true);
				if (result.equals("ok")) {
					response.getWriter().println("Gravou a comparacao:" + c.getId() + " - " + c.getPergunta(c.getSiteOriginal(), c.getLocale()) + "!!<BR>");
				} else {
					response.getWriter().println("Erro ao gravar a comparacao:" + c.getId() + " - " + c.getPergunta(c.getSiteOriginal(), c.getLocale()) + "!!<BR>" + result);
				}
			}
		}
		response.getWriter().println("Fim!!<BR>");

	} else if (tipoCorrecao.equals("20")) {
		//DELETA AS BUSCASCOMPARACAO CORROMPIDAS!
		response.getWriter().println("Deletando busca comparacoes corrompidas!!<BR>");
		int offset = 0;
		int limit = 100;
		ArrayList<BuscaComparacao> listBuscaComp = d.getListaBuscaComparacao(offset, limit);
		while (listBuscaComp.size() > 0) {
			for (BuscaComparacao bsc: listBuscaComp) {
				if (bsc.getIdComparacao() == null || bsc.getIdProduto() == null) {
					response.getWriter().println("Vai deletar a busca: " + bsc.getId() + "!!<BR>");
					boolean res = d.deletaBuscaComparacao(bsc);
					if (res) {
						response.getWriter().println("Deletou a busca: " + bsc.getId() + "!!<BR>");
					} else {
						response.getWriter().println("Falha ao deletar a busca: " + bsc.getId() + "!!<BR>");
					}
				}
			}
			offset += limit;
			listBuscaComp = d.getListaBuscaComparacao(offset, limit);
		}
		response.getWriter().println("Fim!!<BR>");
	} else if (tipoCorrecao.equals("21")) {
		//LIMPAR AS IMAGENS QUE NAO ESTAO SENDO UTILIZADAS
		response.getWriter().println("Deletando imagens nao utilizadas em comparacoes!!<BR>");
		int offset = 0;
		int limit = 100;
		ArrayList<LinkBlobImage> listImgBlob = d.getListaLinkBlobImage(offset, limit);
		while (listImgBlob.size() > 0) {
			response.getWriter().println("listImgBlob.size() = " + listImgBlob.size() + "!!<BR>");
			for (LinkBlobImage linkBlob: listImgBlob) {
				
				Comparacao c = d.getComparacaByImgVersus("/img/" + linkBlob.getId());
				if (c == null) {
					response.getWriter().println("nao encontrou nenhuma comparacao com linkImgBlob  = " + "/img/" + linkBlob.getId() + ".. vai tentar deletar!!<BR>");		
					boolean res = d.deletaLinkBlogImage(linkBlob);
					if (res) {
						response.getWriter().println("Deletou o linkblobimage: " + "/img/" + linkBlob.getId() + "!!<BR>");
					} else {
						response.getWriter().println("Falha ao deletar a busca: " + "/img/" + linkBlob.getId() + "!!<BR>");
					}
				} else {
					response.getWriter().println("comparacao de linkImage:[" + "/img/" + linkBlob.getId() + "] = " + c.getId() + " - [" + c.getPergunta(c.getPathComparacao(c.getSiteOriginal(), c.getLocale())) + "]!!<BR>");
				}
			}
			offset += limit;
			listImgBlob = d.getListaLinkBlobImage(offset, limit);
		}
		response.getWriter().println("Fim!!<BR>");
	} else if (tipoCorrecao.equals("22")) {
		//Pega os comentarios de um share no face
		System.out.println("tipoCorrecao 22 iniciando..");

		Usuario uAnonimo = d.getUsuario("anonimo@anonimo.com");
		Usuario u = (Usuario)session.getAttribute("USUARIOATUAL");
		Usuario userFB = null;
		Long idComp = Long.parseLong(request.getParameter("idComp"));

		Comparacao c = d.getComparacao(idComp);
		if (c != null && c.getListSharesID_FB() != null && c.getListSharesID_FB().size() > 0) {
			System.out.println("entrou na comparacao:" + c.getId());
			String postId = c.getListSharesID_FB().get(0);
					
			response.getWriter().println("Tentando ler os comentarios do post: " + postId + "<BR>");
			response.getWriter().println("https://api.facebook.com/method/fql.query?format=JSON&query=" + URLEncoder.encode("SELECT post_fbid, fromid, object_id, text, time FROM comment WHERE object_id in (SELECT comments_fbid FROM link_stat WHERE url ='http://www.qual-o-melhor.com/which-is-better-intel-or-amd')", "UTF-8") + "&pretty=1");
			response.getWriter().println("aCCESSTOKEN=[" + u.getAccessToken() + "]");

			String url = "https://graph.facebook.com/" + postId + "/comments&access_token=" + u.getAccessToken();
			response.getWriter().println("<BR><BR>url = " + url + "<BR><BR>");

			System.out.println("vai ler a urlfacebook:" + url);

			System.out.println("vai iniciar o stringbuffer..");
			StringBuffer strBuff = new StringBuffer();
			System.out.println("stringbuffer iniciado..");

			try {
	            URL urlGraph = new URL(url);
	            BufferedReader reader = new BufferedReader(new InputStreamReader(urlGraph.openStream()));
	            String line;

	            while ((line = reader.readLine()) != null) {
	            	response.getWriter().println(line + "<BR>");
	            	strBuff.append(line);
	            }
	            reader.close();

	        } catch (MalformedURLException e) {
	            e.printStackTrace();
	        } catch (IOException e) {
	            e.printStackTrace();
	        }
			System.out.println("buffer = " + strBuff.toString());
			response.getWriter().println(strBuff.toString() + "<BR>");

			Gson gson = new GsonBuilder().create();
			System.out.println("criou o GSON!!");

			String json = strBuff.toString();

			ObjetoFB objFB = gson.fromJson(json, ObjetoFB.class);

			System.out.println("leu o GSON!!");
			System.out.println("objetoFB:" + objFB);

			response.getWriter().println("dataComments.length = " + objFB.data.length + "<BR>");

			Produto p1 = d.getProduto(c.getListProdutosComp().get(0));
			Produto p2 = d.getProduto(c.getListProdutosComp().get(1));

			for (int i = 0; i < objFB.data.length; i++) {
				String idCommentFB = objFB.data[i].id;
				response.getWriter().println("id = " + idCommentFB + "<BR>");
				String message = objFB.data[i].message;
				response.getWriter().println("message = " + message + "<BR>");
				response.getWriter().println("from = " + objFB.data[i].from.id + " - " + objFB.data[i].from.name + "<BR>");

				boolean adicionou = false;

				if (!c.possuiIdCommentFB(idCommentFB)) {

					Long idProduto = 0L;
					if (message.indexOf(p1.getNomeProduto()) != -1) {
						idProduto = p1.getId();
						System.out.println("voto para o produto:" + p1.getNomeProduto());
					} else if (message.indexOf(p2.getNomeProduto()) != -1) {
						idProduto = p2.getId();
						System.out.println("voto para o produto:" + p2.getNomeProduto());
					} else {
						Random rand = new Random((new Date()).getTime());
						idProduto = rand.nextBoolean()?p1.getId():p2.getId();
						System.out.println("voto aleatorio para o produto:" + (idProduto == p1.getId()?p1.getNomeProduto():p1.getNomeProduto()));
					}

					userFB = d.getUsuarioFB(objFB.data[i].from.id);
					if (userFB == null) {
						userFB = new Usuario("", objFB.data[i].from.id, OrigemLogin.FACEBOOK.getSiteOrigem(), "", "", objFB.data[i].from.name, "", "", "", "", false, "", new Date());
						if (!d.gravaNovoUsuario(userFB)) {
							userFB = uAnonimo;	
						}
						System.out.println("UserFB.getId = " + userFB.getId());
					}

					if (userFB != uAnonimo) {
						VotoComparacaoProduto voto = c.getVotoAtual(userFB.getId());
						if (voto == null) {
							c.getListVotoComparacaoProdutos().add(new VotoComparacaoProduto(userFB.getId(), objFB.data[i].from.name, "http://graph.facebook.com/" + objFB.data[i].from.id + "/picture", idProduto, message, c.getListVotoComparacaoProdutos().size(), "FACE", idCommentFB));
						} else {
							//verificar se a resposta ja tem o idCommentFB
							boolean commentJaIncluido = false;
							for (Resposta resp: voto.getListResposta()) {
								if (resp.getIdCommentFB().equals(idCommentFB)) {
									commentJaIncluido = true;
									break;
								}
							}
							if (!commentJaIncluido) {
								voto.getListResposta().add(new Resposta(userFB.getId(), objFB.data[i].from.name, "http://graph.facebook.com/" + objFB.data[i].from.id + "/picture", message, voto.getListResposta().size(), "FACE", idCommentFB));
							}
						}
					} else {
						System.out.println("Deixou de salvar porque nao conseguiu incluir o usuario temporario do face..");
					}

					adicionou = true;
				}

				if (adicionou) {
					d.gravaNovaComparacao(c);
				}
			}
		}
		response.getWriter().println("Fim!!<BR>");
	}
%>